From ca278a6abd56b8ef3c630d2b4ccc67102897859f Mon Sep 17 00:00:00 2001 From: "awilliam@xenbuild.aw" Date: Mon, 2 Oct 2006 21:34:47 -0600 Subject: [PATCH] [IA64] add perfcounter for vTLB flush. Signed-off-by: Isaku Yamahata --- xen/arch/ia64/xen/domain.c | 1 + xen/arch/ia64/xen/vhpt.c | 5 +++++ xen/include/asm-ia64/perfc_defn.h | 9 +++++++++ 3 files changed, 15 insertions(+) diff --git a/xen/arch/ia64/xen/domain.c b/xen/arch/ia64/xen/domain.c index 5681620466..9433affbe8 100644 --- a/xen/arch/ia64/xen/domain.c +++ b/xen/arch/ia64/xen/domain.c @@ -101,6 +101,7 @@ static void flush_vtlb_for_context_switch(struct vcpu* vcpu) vhpt_flush(); } local_flush_tlb_all(); + perfc_incrc(flush_vtlb_for_context_switch); } } diff --git a/xen/arch/ia64/xen/vhpt.c b/xen/arch/ia64/xen/vhpt.c index f8db5c6e17..b439ccda42 100644 --- a/xen/arch/ia64/xen/vhpt.c +++ b/xen/arch/ia64/xen/vhpt.c @@ -155,6 +155,8 @@ void vcpu_flush_vtlb_all(struct vcpu *v) /* We could clear bit in d->domain_dirty_cpumask only if domain d in not running on this processor. There is currently no easy way to check this. */ + + perfc_incrc(vcpu_flush_vtlb_all); } static void __vcpu_flush_vtlb_all(void *vcpu) @@ -178,6 +180,7 @@ void domain_flush_vtlb_all (void) __vcpu_flush_vtlb_all, v, 1, 1); } + perfc_incrc(domain_flush_vtlb_all); } static void cpu_flush_vhpt_range (int cpu, u64 vadr, u64 addr_range) @@ -200,6 +203,7 @@ void vcpu_flush_tlb_vhpt_range (u64 vadr, u64 log_range) cpu_flush_vhpt_range (current->processor, vadr, 1UL << log_range); ia64_ptcl(vadr, log_range << 2); ia64_srlz_i(); + perfc_incrc(vcpu_flush_tlb_vhpt_range); } void domain_flush_vtlb_range (struct domain *d, u64 vadr, u64 addr_range) @@ -236,6 +240,7 @@ void domain_flush_vtlb_range (struct domain *d, u64 vadr, u64 addr_range) /* ptc.ga */ ia64_global_tlb_purge(vadr,vadr+addr_range,PAGE_SHIFT); + perfc_incrc(domain_flush_vtlb_range); } static void flush_tlb_vhpt_all (struct domain *d) diff --git a/xen/include/asm-ia64/perfc_defn.h b/xen/include/asm-ia64/perfc_defn.h index 58d52a97ff..964df13a51 100644 --- a/xen/include/asm-ia64/perfc_defn.h +++ b/xen/include/asm-ia64/perfc_defn.h @@ -107,3 +107,12 @@ PERFSTATUS(privop_addr_##name##_overflow, "privop-addrs overflow " #name) PERFPRIVOPADDR(get_ifa) PERFPRIVOPADDR(thash) #endif + +// vhpt.c +PERFCOUNTER_CPU(vcpu_flush_vtlb_all, "vcpu_flush_vtlb_all") +PERFCOUNTER_CPU(domain_flush_vtlb_all, "domain_flush_vtlb_all") +PERFCOUNTER_CPU(vcpu_flush_tlb_vhpt_range, "vcpu_flush_tlb_vhpt_range") +PERFCOUNTER_CPU(domain_flush_vtlb_range, "domain_flush_vtlb_range") + +// domain.c +PERFCOUNTER_CPU(flush_vtlb_for_context_switch, "flush_vtlb_for_context_switch") -- 2.30.2